home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / ikap / etc / f45 / f45make.c < prev    next >
C/C++ Source or Header  |  2000-05-08  |  1KB  |  69 lines

  1. /*
  2. 画面表示情報から「4x5ドットビットマップフォントファイル」を生成
  3.  
  4. 6万色:白(0xffff)地に黒(0x0000)であること
  5.  
  6. */
  7.  
  8. #include    <stdio.h>
  9.  
  10.  
  11. /*
  12. 指定座標から4x5ドットビットマップ情報(3バイト)をpatにかきだし
  13. */
  14. int    getFont4x5(fx,fy,pataddr)
  15. int    fx,fy;
  16. unsigned char    *pataddr;
  17. {
  18.     int    x,y,pat;
  19.     unsigned char *buf;
  20.  
  21.     buf=pat;
  22.     pat=0;
  23.     for( y=0; y<5; y++ ){ ; for( x=0; x<4; x++ ){
  24.         pat<<=1;
  25.         if( point(fx+x,fy+y)==0 ){
  26.             pat|=1;
  27.         }
  28.     }}
  29.     pataddr[0]=(pat&0b000011111111000000000000)>>12;
  30.     pataddr[1]=(pat&0b000000000000111111110000)>>4;
  31.     pataddr[2]=(pat&0b000000000000000000001111)<<4;
  32. }
  33.  
  34.  
  35. /*                    code      */
  36. unsigned char fontBuf[0x100][3];
  37.  
  38. int    main(argc,argv)
  39. int    argc;
  40. char    *argv[];
  41. {
  42.     short    fx,fy,fcode;
  43.  
  44.     for( fy=0; fy<=0x0f; fy++ ){ ; for( fx=0; fx<=0x0f; fx++ ){
  45.         fcode=fy*0x10+fx;
  46.         getFont4x5(fx*4,fy*8,fontBuf[fcode]);
  47.     }}
  48.  
  49.     {
  50.         FILE    *fp;
  51.         fp=fopen(argv[1],"wb");
  52.         if( fp==NULL ){
  53.             printf(
  54.             "画面表示から4x5ドットフォントデータ(バイナリ)を作ります\n"
  55.             "usage:@>f45make filename.f45\n"
  56.             "※実行前に、6万色画面にフォントデータを表示しておくこと\n"
  57.             );
  58.             goto quick_exit;
  59.         }
  60.         fwrite(fontBuf,sizeof(unsigned char),sizeof(fontBuf),fp);
  61.         fclose(fp);
  62.     }
  63.  
  64. quick_exit:
  65.     return(0);
  66. }
  67.  
  68.  
  69.